import { fileURLToPath, URL } from 'node:url';

import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

// https://vitejs.dev/config/
export default(({ mode } : { mode : any })=>{
  // 获取当前模式下的环境变量
  process.env = {...process.env, ...loadEnv(mode, process.cwd())};
  return defineConfig({
    plugins: [
      vue({ 
        template: {
          compilerOptions: {
            isCustomElement: tag => /^micro-app/.test(tag)
          }
        }
      }),
      vueJsx(),
      AutoImport({ resolvers: [ElementPlusResolver()] }),
      Components({ resolvers: [ElementPlusResolver()] }),
    ],
    resolve: {
      alias: {
        '@src': fileURLToPath(new URL('./src', import.meta.url))
      }
    },
    server:{
      host:'0.0.0.0',
      port:5200,
      proxy: {
        '/api': {
          target: 'http://218.76.30.15:18180', // 代理地址
          changeOrigin: true,
          ws:true,
          rewrite: (path) => path.replace(/^\/api/, ''),
          // selfHandleResponse:true,
          // configure:(proxy,_options)=>{
          //   proxy.on('proxyRes', (proxyRes, req, res) => {
          //     if(req.url.split('?')[0].split('/').pop() == 'xhr_streaming'){
          //       // console.log(res,'ddddd');
          //       console.log(res.hasHeader,res.getHeaders());
          //       res.removeHeader("Connection");
          //       res.removeHeader('Origin');
          //       res.setHeader("Origin","");
          //       res.setHeader("Upgrade","websocket");
          //       res.setHeader("Connection","upgrade");
          //       proxyRes.pipe(res);
          //       // 
          //     }
          //     proxyRes.pipe(res)
          //   });
          // },
        },
        // '/socketio': {
        //   target: 'ws://192.168.2.2:18180', // 获取环境变量接口代理地址
        //   changeOrigin: true,
        //   ws:true,
        //   rewrite: (path) => path.replace(/^\/socketio/, '')
        // },
      }
    },
    preview:{
      host:'0.0.0.0',
      port:5200,
      proxy: {
        '/api': {
          target: 'http://218.76.30.15:18180', // 代理地址
          changeOrigin: true,
          ws:true,
          rewrite: (path) => path.replace(/^\/api/, ''),
          // selfHandleResponse:true,
          // configure:(proxy,_options)=>{
          //   proxy.on('proxyRes', (proxyRes, req, res) => {
          //     if(req.url.split('?')[0].split('/').pop() == 'xhr_streaming'){
          //       // console.log(res,'ddddd');
          //       console.log(res.hasHeader,res.getHeaders());
          //       res.removeHeader("Connection");
          //       res.removeHeader('Origin');
          //       res.setHeader("Origin","");
          //       res.setHeader("Upgrade","websocket");
          //       res.setHeader("Connection","upgrade");
          //       proxyRes.pipe(res);
          //       // 
          //     }
          //     proxyRes.pipe(res)
          //   });
          // },
        },
        // '/socketio': {
        //   target: 'ws://192.168.2.2:18180', // 获取环境变量接口代理地址
        //   changeOrigin: true,
        //   ws:true,
        //   rewrite: (path) => path.replace(/^\/socketio/, '')
        // },
      }
    },
    esbuild:{
      // sourcemap:true,
      drop: mode == 'production' ? ['console','debugger'] : []
    }
  })
})
